#include "NetMsg.h"
#include "MsgAll.h"

namespace cupid
{

NetMsg::NetMsg(void)
{
	init();
}

NetMsg::~NetMsg(void)
{
}

//////////////////////////////////////////////////////////////////////
void NetMsg::init()
{
	memset(m_bufMsg, 0L, sizeof(m_bufMsg));
	m_msgSize	=0;
	m_msgType	=0;
}

//////////////////////////////////////////////////////////////////////
BOOL NetMsg::isValid(void)
{
	if(0 == this->getType())
		return false;

	return true;
}

//////////////////////////////////////////////////////////////////////
BOOL NetMsg::create( char* msgBuf, DWORD dwSize )
{
	if(!msgBuf)
		return false;

	memcpy(this->m_bufMsg, msgBuf, dwSize);
	return true;
}

//////////////////////////////////////////////////////////////////////
void NetMsg::process( void *info )
{
}

//////////////////////////////////////////////////////////////////////
bool NetMsg::sendMsg( NetMsg* msg )
{
	return true;
}

//////////////////////////////////////////////////////////////////////
// static functions;
//////////////////////////////////////////////////////////////////////
NetMsg* NetMsg::createMsg(int idProcess, int idSocket, int idMsg, const char* bufMsg, unsigned short msgSize)
{
	// check it...
	if(idMsg == 0 || !bufMsg || (int)msgSize > getMaxSize())
		return NULL;

	NetMsg* msg = createMsg(idMsg);
	if(!msg)
		return NULL;

	msg->m_idProcess	= idProcess;
	msg->m_idSocket		= idSocket;
	msg->m_msgType	= idMsg;
	msg->m_msgSize	= msgSize;

	if(!msg->create((char*)bufMsg, msgSize))
	{
		delete(msg);
		return NULL;
	}
	else
	{
		return msg;
	}
}
void NetMsg::append(int idProcess, int idSocket)
{ 
	m_idProcess = idProcess;
	m_idSocket = idSocket; 
}

NetMsg* NetMsg::createMsg(int type)
{
	NetMsg* msg	=NULL;
	switch(type)
	{
		_CREATE_NEW_MSG_
	}

	return msg;
}

}